package version2024.medium;

import java.util.Scanner;

/**
 * @author sunhl
 * @Description: HJ90 合法IP  字符串, 正则
 * @Date: created in 2025/1/9 星期四 13:30
 * @Modified By:
 */
public class HJ90_LegalIP {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String s = in.next();

            String out = "YES";
            if (!s.matches("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+")) {
                // 正则验证是不是.连接的4个数
                out = "NO";
            } else {
                // 分割字符串的方法有细节, "\\." 是一个正则表达式，表示点（.）作为分隔符
                // -1 是传递给 split 方法的第二个参数，它表示分割的次数不限，即使有连续的分隔符也会被保留为空字符串
                // 如果有 192.0..  这种输入, 也能保证分割为四段, 后续能够判断出来
                String[] ip = s.split("\\.", -1);
                for (int i = 0; i < 4; i++) {
                    // 负数, 大于255, 01这种的判断出来
                    if (Integer.parseInt(ip[i]) < 0
                            || Integer.parseInt(ip[i]) > 255
                            || (ip[i].charAt(0) == '0' && ip[i].length() != 1)) {
                        out = "NO";
                    }
                }
            }
            System.out.print(out);
        }
    }
}
